/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managedBeans;

import dao.DaoDoutorLocal;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.AjaxBehaviorEvent;
import pojo.Doutor;

/**
 *
 * @author alessandro
 */
@ManagedBean
@SessionScoped
public class DoutorBean {

    @EJB
    private DaoDoutorLocal daoDoutor;
    private Boolean editando = false;
    private Doutor regAnterior;
    private Doutor doutor;
    private Doutor doutorSelecionado;
    private String nomeDoutor;

    public String getNomeDoutor() {
        System.out.println("retorna o nome " + nomeDoutor);
        return nomeDoutor;
    }

    public void setNomeDoutor(String nomeDoutor) {
        System.out.println("setou o nome " + nomeDoutor);
        this.nomeDoutor = nomeDoutor;
    }

    public List<Doutor> getFiltraDoutorNome() {
        System.out.println("entro no pessoa filtra pessoa nome set");
        if (getNomeDoutor() != null && getNomeDoutor().length() > 1)
        return daoDoutor.buscaDoutoresNomes(getNomeDoutor());
        else return null;

    }

    public DoutorBean() {
        doutor = new Doutor();
        doutorSelecionado = new Doutor();
    }

    public Integer getIdDoutor() {
        return doutor.getIdDoutor();
    }

    public void setIdDoutor(Integer idDoutor) {
        doutor.setIdDoutor(idDoutor);
    }

    public String getNome() {
        return doutor.getNome();
    }

    public void setNome(String nome) {
        doutor.setNome(nome);
    }

    public Date getHorarioTrabInicial() {
        return doutor.getHorarioTrabInicial();
    }

    public void setHorarioTrabInicial(Date horarioTrabInicial) {
        doutor.setHorarioTrabInicial(horarioTrabInicial);
    }

    public Date getHorarioTrabFinal() {
        return doutor.getHorarioTrabFinal();
    }

    public void setHorarioTrabFinal(Date horarioTrabFinal) {
        doutor.setHorarioTrabFinal(horarioTrabFinal);
    }

    public Integer getCro() {
        return doutor.getCro();
    }

    public void setCro(Integer cro) {
        doutor.setCro(cro);
    }

    public void salvar(ActionEvent actionEvent) {
        if (doutor.getHorarioTrabInicial().after(doutor.getHorarioTrabFinal())) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "A hora inicial é maior que a final.", null));
        } else {

            doutor = daoDoutor.salvar(doutor);

            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Registro gravado com sucesso."));
            System.out.println("clicou no salvar");
            editando = false;
        }
    }

    public List<Doutor> getBuscaTodosDoutores() {
        return daoDoutor.buscaTodosDoutores();
    }

    public void setDoutorSelecionado(Doutor doutor) {
        if (doutor != null) {
            this.doutorSelecionado = doutor;
            this.doutor = this.doutorSelecionado;
            System.out.println("setdoutor" + doutorSelecionado.getNome());
        }
    }

    public Doutor getDoutorSelecionado() {
        System.out.println("getdoutor" + doutorSelecionado.getNome());
        return this.doutorSelecionado;

    }

    public void novo(ActionEvent actionEvent) {
        regAnterior = doutor;
        System.out.println("clicou no novo");
        doutor = new Doutor();
        editando = true;
    }

    public void editar(ActionEvent actionEvent) {
        regAnterior = doutor;
        editando = true;
        System.out.println("clicou no editar");
    }

    public void cancelar(ActionEvent actionEvent) {
        doutor = regAnterior;
        editando = false;
        System.out.println("clicou no cancelar");
    }

    public void excluir(ActionEvent actionEvent) {
        try {
            System.out.println("entrou no excluiu");
            daoDoutor.excluir(doutor);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Excluido com sucesso"));
            doutor = new Doutor();
        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), null));
        }
    }

    public boolean isEditando() {
        return editando;
    }

    public boolean isNovoDesativado() {
        return isEditando();
    }

    public boolean isEditarDesativado() {
        System.out.println(isEditando());
        System.out.println(doutor.getIdDoutor());
        return (isEditando() || doutor.getIdDoutor() == null);
    }

    public boolean isSalvarDesativado() {
        return !isEditando();
    }

    public boolean isExcluirDesativado() {
        return isEditarDesativado();
    }

    public boolean isCancelarDesativado() {
        return isSalvarDesativado();
    }

    public boolean isCamposDesativados() {
        return !isEditando();
    }

    public boolean isPesquisarDesativado() {
        return isNovoDesativado();
    }
    
        public void relatorio(ActionEvent actionEvent) {
        System.out.println("entrou no relatorio");
                 try {
              String url = "chamarServlet";
             FacesContext.getCurrentInstance().getExternalContext().redirect(url);
          } catch (IOException ex) {

         }


    }
}
